Skip to content

Pin morphobricks-normalization v0.4.0 (position_id required) - #268

Merged
guijacquemet merged 2 commits into
mainfrom
claude/normalization-0.4.0-pin
Nov 10, 2026
Merged

guijacquemet merged 2 commits into
mainfrom
claude/normalization-0.4.0-pin

Conversation

@guijacquemet

Copy link
Copy Markdown
Contributor

Fixes #262

Part 2 of #262 (part 1 was #265). Moves the normalization pin from @v0.3.4 to @v0.4.0 (tag c9522636a66dab0f6e9e907079a4d5f46a8d0a6c). That release is breaking: PlaneRecord.position_id is required and keyword-only, a blank position_id in a CSV row is refused with CsvFormatError, and schema v1-3 tables are refused.

Changes (the issue's checklist)

  1. Tests pass position_id= wherever a PlaneRecord is built: simulation.py, test_intensity.py, test_report.py, test_unchecked_channels.py, test_notebook_debt.py, test_histogram_goldens.py (the successor of test_schema_v2_equivalence.py).
  2. run/steps.py: the dead fill-in replace(r, position_id=...) is removed.
  3. tests/test_run.py: test_table_without_position_ids_is_filled_without_reading becomes ..._is_refused_and_rebuilt. It blanks the column, and run/reuse.py turns the reader's CsvFormatError into a full rebuild ("the earlier histogram table could not be read"). The test checks that every image is read again and that the rebuilt table is byte-identical to the original.
  4. run/rows.py: position: str | None becomes str.
  5. README PlaneRecord(...) example gets position_id=.
  6. pyproject.toml pin v0.3.4 to v0.4.0 (the only place the URL appears). README and AGENTS.md text that states the pin is updated. CHANGELOG has an Unreleased note. No test states the pin.

Also: tools/code_rules_baseline.json lowers the tests/test_run.py line baseline from 860 to 859 (the rewritten test is shorter).

Not touched, as requested: notebooks/MorphoBricks_Preprocessing.ipynb and RELEASE_REF. The RELEASE_REF install still pins normalization v0.3.4, which is unchanged and fine.

Evidence

  • Seven vendored Spec valid fixtures (v03, v08, v13, v28, v30, v33, v34) run through make_described_run on main (normalization 0.3.4) and on this branch (0.4.0). plane_histograms.csv is byte-identical for all seven (SHA-256 equal, e.g. v03 0d7a0081...4876, 53476 bytes).
  • Tests: python tools/check.py passes: ruff check, ruff format --check, 5148 passed, 4 skipped, code rules at baseline. The skips are four platform skips (test_cli_log.py:166, test_folder_rules.py:199 and :230 for case-sensitive file systems; test_discovery.py:665 for running as root).

Generated by Claude Code

Part 2 of #262: PlaneRecord.position_id is required and keyword-only, a blank
position_id in a CSV row is refused, and schema v1-3 tables are refused.

- tests pass position_id= wherever a PlaneRecord is built
- run/steps.py: remove the dead fill-in of blank position ids
- test_run: a table without position ids is refused and rebuilt
- run/rows.py: position is str
- README example, AGENTS.md and CHANGELOG note the new pin
- pyproject.toml: @v0.3.4 -> @v0.4.0

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G3qp9AxjpGPw9xfWAUJNqc
Keeps both CHANGELOG entries (normalization v0.4.0 pin, three-cell notebook).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G3qp9AxjpGPw9xfWAUJNqc
@guijacquemet
guijacquemet merged commit a87f524 into main Nov 10, 2026
7 checks passed
@guijacquemet
guijacquemet deleted the claude/normalization-0.4.0-pin branch November 10, 2026 16:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

tests/frozen_clock.py fails without the [notebook] extra; checklist for the normalization pin move

2 participants